声明:博主写了一些Ambari系列文章,可以在历史文章中查看。

一、概述

  1. 如果要开发ambari API的话,我们需要在ambari-server的文件里面添加相关java代码。

  2. 然后整体编译ambari,可以不编译ambari-metrics系列。

  3. 编译成功后,yum remove ambari-server

  4. yum install ambari-server-*.rpm

  5. ambari-server setup

  6. vim /etc/ambari-server/conf/ambari.properties

  7. server.jdbc.driver.path=/usr/share/java/mysql-jdbc.driver.jar

    mysql-jdbc.driver.jar下载地址 将jar包放入/usr/share/java/目录下

  8. ambari-server setup –jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-jdbc.driver.jar

  9. ambari-server start

  10. 访问ambari页面

二、详细开发指南

1、上代码实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.xxx.xxx.api.services;


import javax.ws.rs.POST;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**
* Copy of guice persist module for local modifications
*/
@Path("/yarnInfo")
public class yarnService {
@GET
@Path("/show/{ip}")
@Produces("application/json")
public Map<String, String> testYarn(@PathParam("ip") String ip) {
Map<String, String> map = new HashMap<String, String>();
map.put("status", "OK");
map.put("address", "http://"+ip+":8088/ws/v1/cluster/apps");
return map;
}

@GET
@Path("/yarn/{ip}")
@Produces("application/json")
public Map<String, Object> yarn(@PathParam("ip") String ip) throws IOException {
Map<String, Object> map = new HashMap<String, Object>();
String info = "{}"; //用于接收API信息
CloseableHttpClient httpclient = HttpClients.createDefault();
//将url放入
HttpGet httpGet = new HttpGet("http://"+ip+":8088/ws/v1/cluster/apps");
CloseableHttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
info = EntityUtils.toString(entity);
JSONObject json = JSONObject.fromObject(info);
map.put("info", json);
//System.out.println(json);

//最后释放资源
response.close();
return map;
}
}
# 说明:
带参的方法:@PathParam("ip") String ip
返回的数据什么类型:@Produces("application/json")
请求的方式:@GET@POST

2、这样等编译成功,并且ambari安装成功后,就可以访问自制API:ip:8080/api/v1/yarnInfo/show/参数

3、需要的jar包,可以在ambari-server的根目录下的pom.xml文件内添加中央仓库位置,整体编译的时候会自动下载。


其实这样访问接口还是404状态,因为接口所在的类没有注册。

1
2
3
4
...
由于商业价值,此处省略若干内容...
如需获取清洗流程图以及后续详细干货内容,可添加好友:create17_ 详聊。
...

三、如何联系我

如需获取清洗流程图以及后续详细干货内容,可添加好友:create17_ 详聊。

Ambari 二次开发知识库地址:https://www.yuque.com/create17/ambari